package demo;

//抽象类
//抽象类不能实例化,只能用于继承
//普通类继承了抽象类必须重写抽象类方法
//抽象类A 继承 抽象类B，可以不用重写抽象类B的抽象方法
//抽象类可以有构建方法，给子类使用
//抽象类可以认为是 is-a 的关系
abstract class Shape{
    //其内部和普通类没有区别，只是多了抽象方法
    //抽象方法 没有具体实现都方法 不能是私有的
    public abstract void draw();
}
class Rect extends Shape{
    @Override
    public void draw() {
        System.out.println("矩形");
    }
}

abstract class A extends Shape{

}
public class Test {
    public static void main(String[] args) {
//        demo.Shape shape = new demo.Shape();
    }
}
